home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Czech Logic, Card & Gambling Games
/
Logické hry.iso
/
hry
/
Fish Fillets
/
script
/
puzzle
/
code.lua
next >
Wrap
Text File
|
2005-07-16
|
10KB
|
314 lines
-- -----------------------------------------------------------------
-- Init
-- -----------------------------------------------------------------
local function prog_init()
initModels()
sound_playMusic("music/rybky10.ogg")
local pokus = getRestartCount()
-- -------------------------------------------------------------
local function prog_init_room()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
room.uvod = 1
room.tahy = random(500) + 500
room.opldovi = 0
return function()
if no_dialog() and isReady(small) and isReady(big) then
if room.uvod == 1 then
room.uvod = 0
switch(pokus){
[1] = function()
pom1 = random(2) + 1
end,
[2] = function()
pom1 = random(2) + 1
end,
default = function()
pom1 = random(3)
end,
}
adddel(10 + random(20))
switch(pom1){
[1] = function()
if random(2) == 0 then
addm(0, "puc-m-koukej")
else
addv(0, "puc-v-podivej")
end
end,
[2] = function()
addv(0, "puc-v-videl")
addm(10, "puc-m-oblicej")
end,
}
elseif room.opldovi == 0 and dist(small, pld) < 4 and look_at(small, pld) and random(100) < 1 then
room.opldovi = 1
switch(random(3)){
[0] = function()
addm(10, "puc-m-pld0")
end,
[1] = function()
addm(10, "puc-m-pld1")
end,
[2] = function()
addm(10, "puc-m-hele")
end,
}
addm(random(30) + 5, "puc-m-slizka")
planSet(pld, "smutny", 60 + random(60))
pld:planDialog(3, "puc-x-pldik")
elseif room.tahy == 1 and big.dir ~= dir_no then
addv(10, "puc-v-fuska"..random(2))
room.tahy = random(500) + 500
elseif prvni.hotovo == 1 then
addv(5, "puc-v-fuska2")
addm(random(10) + 3, "puc-m-stalo")
addm(random(20) + 5, "puc-m-obraz")
adddel(5)
planSet(prvni, "faze", 1)
addv(20, "puc-v-nesmysl")
prvni.hotovo = 2
end
end
end
end
-- -------------------------------------------------------------
local function prog_init_prvni()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
prvni.hotovo = 0
prvni.faze = 0
local Items = {}
Items[00] = prvni
Items[01] = puzz02
Items[02] = puzz03
Items[03] = puzz04
Items[04] = puzz05
Items[05] = puzz06
Items[06] = puzz07
Items[07] = puzz08
Items[08] = puzz09
Items[09] = puzz10
Items[10] = puzz11
Items[11] = puzz12
Items[12] = puzz13
Items[13] = puzz14
Items[14] = puzz15
Items[15] = puzz16
Items[16] = puzz17
Items[17] = puzz18
Items[18] = puzz19
Items[19] = puzz20
return function()
pomb1 = true
for pom1 = 0, 3 do
for pom2 = 0, 4 do
local x_real, x_ideal, y_real, y_ideal
-- Ideal X position is (xposition in puzzle) * (width of one piece)
x_ideal = prvni.X + pom1 * 4
-- Index is pom1 + pom2 * (number of pieces in one row)
x_real = (Items[pom1 + pom2 * 4]).X
y_ideal = prvni.Y - pom2 * 4
y_real = (Items[pom1 + pom2 * 4]).Y
pomb1 = pomb1 and (x_ideal == x_real) and (y_ideal == y_real)
end
end
if prvni.hotovo == 0 and pomb1 then
prvni.hotovo = 1
end
for pom1 = 0, 19 do
local puzz_item = Items[pom1]
puzz_item.afaze = prvni.faze
puzz_item:updateAnim()
end
if prvni.faze > 0 and prvni.faze < 4 then
prvni.faze = prvni.faze + 1
end
end
end
-- -------------------------------------------------------------
local function prog_init_pld()
local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
pld.vlnit = 0
pld.del = 0
pld.ocko = 0
pld.smer = 0
pld.faze = 0
pld.smutny = 0
return function()
switch(pld.dir){
[dir_no] = function()
if pld.vlnit == -1 then
pld.vlnit = 8
end
end,
[dir_down] = function()
pld.vlnit = -1
end,
default = function()
pld.vlnit = 8
end,
}
if pld.vlnit > 0 then
pld.smutny = 0
end
if pld.vlnit > 0 then
if pld.del == 0 then
if (pld.vlnit >= 6) and (pld.vlnit <= 8) then
pld.del = 1
elseif (pld.vlnit >= 3) and (pld.vlnit <= 5) then
pld.del = 2
else
pld.del = 3
end
if random(2) == 0 then
pld.afaze = math.mod(pld.afaze + 1, 4)
else
pld.afaze = math.mod(pld.afaze + 3, 4)
end
pld.vlnit = pld.vlnit - 1
if pld.vlnit == 0 then
pld.del = 0
end
if pld.vlnit == 0 then
pld.afaze = 0
elseif pld.vlnit == 1 then
pld.afaze = 3
end
else
pld.del = pld.del - 1
end
elseif pld.smutny > 0 then
if pld.ocko == 0 then
if random(100) < 10 then
pld.ocko = 3
end
end
if pld.ocko > 0 then
pld.ocko = pld.ocko - 1
end
if pld.ocko > 0 then
pld.afaze = 15
else
pld.afaze = 14
end
pld.smutny = pld.smutny - 1
else
if random(100) < 10 then
pld.smer = 1 - pld.smer
end
if (pld.faze == 0) then
pld.afaze = 0
if random(100) < 10 then
pld.faze = 1
end
elseif (pld.faze == 1) or (pld.faze == 4) then
pld.faze = pld.faze + 1
pld.afaze = 4
elseif (pld.faze == 2) or (pld.faze == 3) then
pld.faze = pld.faze + 1
pld.afaze = 5
elseif (pld.faze == 5) then
pld.afaze = 0
pld.faze = 0
end
switch(pld.afaze){
[0] = function()
if pld.smer == 1 then
pld.afaze = 6
end
end,
[4] = function()
if pld.smer == 1 then
pld.afaze = 7
end
end,
}
if pld.ocko == 0 then
if random(100) < 10 then
pld.ocko = 3
end
end
if pld.ocko > 0 then
pld.ocko = pld.ocko - 1
end
if pld.ocko > 0 then
if pld.afaze == 0 then
pld.afaze = 9
else
pld.afaze = pld.afaze + 6
end
end
end
pld:updateAnim()
end
end
-- -------------------------------------------------------------
local function prog_init_small()
return function()
if room.tahy > 1 and small.dir ~= dir_no and level_isNewRound() then
room.tahy = room.tahy - 1
end
end
end
-- -------------------------------------------------------------
local function prog_init_big()
return function()
if room.tahy > 1 and big.dir ~= dir_no and level_isNewRound() then
room.tahy = room.tahy - 1
end
end
end
-- --------------------
local update_table = {}
local subinit
subinit = prog_init_room()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_prvni()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_pld()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_small()
if subinit then
table.insert(update_table, subinit)
end
subinit = prog_init_big()
if subinit then
table.insert(update_table, subinit)
end
return update_table
end
local update_table = prog_init()
-- -----------------------------------------------------------------
-- Update
-- -----------------------------------------------------------------
function prog_update()
for key, subupdate in pairs(update_table) do
subupdate()
end
end